package com.haoting.mamba.ucenter.util;


import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class VerificationCode {
    /**
     * 通过code的值判断是多少位的验证码，通过每次获取的随机数，然后作为位置截取一个字符
     * @param code 表示验证码的位数，比如说4表示4位验证码
     * @return
     */
    public String resultSixCode(int code){
        String data = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
        String result = "" ;
        //System.out.println(data.substring(61, 62));
        for (int i = 0; i < code; i++) {
            //在字符串data的长度范围里，获取一个任意的整数，并拿到对应位置的字符
            int r = new Random().nextInt(data.length());
            result = result + data.substring(r,r+1);
        }
        return result;

    }

    /**
     * 通过将集合乱序排列后，抽取前code位最为随机验证码
     * @param code
     * @return
     */
    // 随机验证码
    public String achieveCode(int code) {  //由于数字1 和0 和字母 O,l 有时分不清，所有，没有字母1 、0
        String[] beforeShuffle= new String[] { "0","1","2", "3", "4", "5", "6", "7", "8", "9"};
        List list = Arrays.asList(beforeShuffle);//将数组转换为集合
        Collections.shuffle(list);  //打乱集合顺序
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            sb.append(list.get(i)); //将集合转化为字符串
        }
        return sb.toString().substring(0, code);  //截取字符串第1到code位置的字符串
    }




}
